#include"jouer.h"
void instruction()
{

    printf("Le Slither Link se joue sur une matrice rectangulaire formée de points.");
    printf("\n");
    printf("Entre ces points, on retrouve parfois des nombres (entre 0 et 3).");
    printf("\n");
    printf("L'objectif est de relier horizontalement ou verticalement les points adjacents afin de créer une ligne unique continue.");
    printf("\n");
    printf("De plus, les nombres indiquent le nombre de côtés de la ligne qui doivent être adjacents au nombre.");
    printf("\n");
    printf("Par exemple, si une case contient le nombre 3, trois de ses côtés doivent être touchés par le trait continu.");
    printf("\n");
    printf("On indique souvent d'un X une ligne impossible à créer.");
    printf("\n");
}

void afficher_matrice_moyenne(char tab[11][11])
{
    int i,j;
    for(i=0;i<11;i++)
    {
        for(j=0;j<11;j++)
        {
            if(tab[i][j]=='X')
                printf(" ");
            else
                printf("%c",tab[i][j]);
        }
        printf("\n");
    }
}

void afficher_matrice_difficile(char tab[21][30])
{
    int i,j;
    for(i=0;i<21;i++)
    {
        for(j=0;j<30;j++)
        {
            if(tab[i][j]=='X')
                printf(" ");
            else
                printf("%c",tab[i][j]);
        }
        printf("\n");
    }
}

void afficher_matrice_facile(char tab[7][7])
{
    int i,j;
    for(i=0;i<7;i++)
    {
        for(j=0;j<7;j++)
        {
            if(tab[i][j]=='X')
                printf(" ");
            else
                printf("%c",tab[i][j]);
        }
        printf("\n");
    }
}
void facile()
{
    int a;
    int x,y;
    int occ=0;
    int score=80;
    char tab[7][7]={{'.',' ','.','X','.',' ','.'},
                    {' ','3',' ','X',' ','3',' '},
                    {'.','X','.','X','.','X','.'},
                    {' ','2',' ','X',' ','2',' '},
                    {'.','X','.',' ','.','X','.'},
                    {' ','2','X','2','X','2',' '},
                    {'.',' ','.',' ','.',' ','.'}};
    afficher_matrice_facile(tab);
    do
    {
        printf("sasire la ligne: ");
        scanf("%d",&x);
        printf("sasire la colone: ");
        scanf("%d",&y);
        if(tab[x][y]=='.')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='3')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='1')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='0')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else
        {
            if(tab[x][y]=='|')
            {
                printf("choix deja saisi\n");
            }
            else if(tab[x][y]=='_')
            {
                printf("choix deja saisi\n");
            }
            else
            {
                if(tab[x][y]=='X')
                {
                    printf("erreur de choix\n");
                    score=score-5;
                }
                else
                {
                    if(x%2==1 && tab[x][y]==' ')
                    {
                        tab[x][y]='|';
                        occ++;
                        afficher_matrice_facile(tab);
                    }
                    if(x%2==0 && tab[x][y]==' ')
                    {
                        tab[x][y]='_';
                        occ++;
                        afficher_matrice_facile(tab);
                    }
                }
            }
        }
        do
        {
            printf("voulez vous quitter?\n");
            printf("0:Continuer\t");
            printf("1:Quitter\n");
            scanf("%d",&a);
        }while(a!=0 && a!=1);
        if(a==1)
            occ=15;

    }while(occ<15);
    if(score<=0)
        printf("GAME OVER");
    else
        printf("vous aver gagner !! \n Votre score est: %d\n",score);
}

void moyen()
{
    int a;
    int x,y;
    int score=130;
    int occ=0;
    char tab[11][11]={{'.',' ','.',' ','.',' ','.',' ','.',' ','.'},
                      {' ','3','X','X','X','X','X','X','X','X',' '},
                      {'.',' ','.',' ','.',' ','.',' ','.','X','.'},
                      {'X','X','X','1','X','1','X','X',' ','2',' '},
                      {'.','X','.','X','.','X','.',' ','.',' ','.'},
                      {'X','0','X','X','X','X','X','X','X','1',' '},
                      {'.','X','.',' ','.',' ','.','X','.','X','.'},
                      {'X','2',' ','X',' ','2',' ','1','X','X',' '},
                      {'.',' ','.','X','.',' ','.',' ','.','X','.'},
                      {' ','X','X',' ',' ',' ','X','X',' ','3',' '},
                      {'.',' ','.',' ','.','X','.','X','.',' ','.'}};
    afficher_matrice_moyenne(tab);
        do
    {
        a=0;
        printf("sasire la ligne: ");
        scanf("%d",&x);
        printf("sasire la colone: ");
        scanf("%d",&y);
        if(tab[x][y]=='.')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='3')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='1')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='0')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else
        {
            if(tab[x][y]=='|')
            {
                printf("choix deja saisi\n");
            }
            else if(tab[x][y]=='_')
            {
                printf("choix deja saisi\n");
            }
            else
            {
                if(tab[x][y]=='X')
                {
                    printf("erreur de choix\n");
                    score=score-5;
                }
                else
                {
                    if(x%2==1 && tab[x][y]==' ')
                    {
                        tab[x][y]='|';
                        occ++;
                        afficher_matrice_moyenne(tab);
                    }
                    if(x%2==0 && tab[x][y]==' ')
                    {
                        tab[x][y]='_';
                        occ++;
                        afficher_matrice_moyenne(tab);
                    }
                }
            }
        }
        do
        {
            printf("voulez vous quitter?\n");
            printf("0:Continuer\t");
            printf("1:Quitter\n");
            scanf("%d",&a);
        }while(a!=0 && a!=1);
        if(a==1)
            occ=25;
    }while(occ<25);
    if(score<=0)
        printf("GAME OVER");
    else
        printf("vous aver gagner !! \n Votre score est: %d\n",score);
}

void difficile()
{
    int a,x,y;
    int score=365;
    int occ=0;
    char tab[21][30]={{'.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.'},
                      {'X','X','X','X','X','0','X','X','X','X','X','0','X','X','X','X','X','X','X','X','X','0','X','X','X','X','X'},
                      {'.','X','.','X','.','X','.',' ','.',' ','.','X','.','X','.','X','.',' ','.',' ','.','X','.','X','.','X','.'},
                      {'X','X','X','0','X','1',' ','X','X','X',' ','X','X','0','X','X',' ','2','X',' ','X','X','X','X','X','X','X'},
                      {'.','X','.','X','.','X','.',' ','.','X','.','X','.','X','.','X','.','X','.',' ','.','X','.','X','.','X','.'},
                      {'X','X','X','X','X','0','X',' ',' ','2',' ','X','X','X','X','X','X','X',' ','3','X','0','X','X','X','X','X'},
                      {'.','X','.','X','.','X','.',' ','.','X','.',' ','.',' ','.',' ','.',' ','.',' ','.','X','.','X','.','X','.'},
                      {'X','0','X','X','X','X',' ','2',' ','X','X','X','X','X','X','1','X','X','X','X','X','X','X','X','X','0','X'},
                      {'.','X','.','X','.',' ','.','X','.',' ','.','X','.','X','.','X','.',' ','.','X','.','X','.','X','.','X','.'},
                      {'X','X','X','X',' ','2','X','X',' ','4',' ','X','X','0','X','X',' ','4',' ','1','X','X',' ','2','X','0','X'},
                      {'.','X','.','X','.','X','.','X','.',' ','.','X','.','X','.','X','.',' ','.','X','.','X','.',' ','.','X','.'},
                      {'X','1',' ','X','X','1','X','X','X','X','X','0','X','X','X','X','X','X','X','X','X','X','X','X',' ','X','X'},
                      {'.','X','.','X','.',' ','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.',' ','.','X','.','X','.'},
                      {'X','X',' ','3',' ','X',' ','1','X','X','X','1','X','X','X','X','X','1','X','X',' ','3',' ','X',' ','1','X'},
                      {'.','X','.',' ','.',' ','.','X','.',' ','.',' ','.',' ','.','X','.',' ','.','X','.','X','.',' ','.','X','.'},
                      {'X','0','X','X','X','1',' ','X',' ','3','X','X','X','1','X','X','X','X',' ','2','X','X','X','1','X','0','X'},
                      {'.','X','.','X','.','X','.','X','.',' ','.',' ','.','X','.',' ','.',' ','.','X','.','X','.','X','.','X','.'},
                      {'X','X','X','X','X','X',' ','X','X','X','X','3',' ','2',' ','X','X','2',' ','X',' ','1','X','X','X','X','X'},
                      {'.','X','.','X','.','X','.',' ','.',' ','.',' ','.','X','.',' ','.',' ','.','X','.','X','.','X','.','X','.'},
                      {'X','X','X','X','X','0','X','1','X','X','X','X','X','0','X','1','X','X','X','1','X','X','X','X','X','X','X'},
                      {'.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.','X','.'}};
     afficher_matrice_difficile(tab);
      do
    {
        a=0;
        printf("sasire la ligne: ");
        scanf("%d",&x);
        printf("sasire la colone: ");
        scanf("%d",&y);
        if(tab[x][y]=='.')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='3')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='1')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else if(tab[x][y]=='0')
        {
            printf("choix interdit\n");
            score=score-5;
        }
        else
        {
            if(tab[x][y]=='|')
            {
                printf("choix deja saisi\n");
            }
            else if(tab[x][y]=='_')
            {
                printf("choix deja saisi\n");
            }
            else
            {
                if(tab[x][y]=='X')
                {
                    printf("erreur de choix\n");
                    score=score-5;
                }
                else
                {
                    if(x%2==1 && tab[x][y]==' ')
                    {
                        tab[x][y]='|';
                        occ++;
                        afficher_matrice_difficile(tab);
                    }
                    if(x%2==0 && tab[x][y]==' ')
                    {
                        tab[x][y]='_';
                        occ++;
                        afficher_matrice_difficile(tab);
                    }
                }
            }
        }
        do
        {
            printf("voulez vous quitter?\n");
            printf("0:Continuer\t");
            printf("1:Quitter\n");
            scanf("%d",&a);
        }while(a!=0 && a!=1);
        if(a==1)
            occ=73;
    }while(occ<73);
    if(score<=0)
        printf("GAME OVER");
    else
        printf("vous aver gagner !! \n Votre score est: %d\n",score);

}
